OMRDetectOvalMarks(Int32,Rectangle[],Int32,Double,Int32[],Boolean) Method
In This Topic
Returns whether a selected OMR (Optical Mark Recognition) field/s is filled or not, with Sensitivity
Control and Confidence Level returned. This method is mainly used for Oval shaped Fields. An OMR
field can be a checkbox, a fill-in-area checkbox, areas on a multiple choice examination form, or any
area where highlighting is required to indicate a certain choice.
Syntax
'Declaration
Public Overloads Function OMRDetectOvalMarks( _
ByVal As Integer, _
ByVal () As Rectangle, _
ByVal As Integer, _
ByVal As Double, _
ByVal () As Integer, _
ByVal As Boolean _
) As Integer()
public int[] OMRDetectOvalMarks(
int ,
Rectangle[] ,
int ,
double ,
int[] ,
bool
)
public function OMRDetectOvalMarks(
: Integer;
: Rectanglearray of;
: Integer;
: Double;
: Integerarray of;
: Boolean
): array of Integer;
public function OMRDetectOvalMarks(
: int,
: Rectangle[],
: int,
: double,
: int[],
: boolean
) : int[];
public: int[]* OMRDetectOvalMarks(
int ,
Rectangle[]* ,
int ,
double ,
int[]* ,
bool
)
public:
array<int>^ OMRDetectOvalMarks(
int ,
array<Rectangle>^ ,
int ,
double ,
array<int>^ ,
bool
)
Parameters
- ImageID
- GdPicture image identifier.
- Areas
- Array of Rectangle. This parameter is used as a reference to the location
of the OMR Fields. Where each Rectangle in the Areas, corresponds to a
rectangle surrounding a single OMR field. For example, if 10 Rectangles
exist in Areas, there will be 10 OMR Fields to be investigated whether
they were checked (filled) or not.
- AreasCount
- Number of Rectangles sent to the method. Basically, the length of
Areas().
- Sensitivity
- How sensitive the method is to degree of filling of the OMR field in
respect to the size of the field itself. Higher values will result in more
tolerant results where semi filling of the field would yield positive
results. Lower values will result in less tolerant results where maximum
filling of the field only would yield positive results Sensitivity greatly
affects the confidence value returned. Range from 0.0 to 1.0. If different
values are entered, they will automatically be limited to this range.
Default Value is 0.5.
- Confidence
- Reference to a 1-Dimensional array of Integers. Must be initialized and
sent to method. After the method is called, the array elements would
correspond to the confidence of the result returned by the method. For
Examples, if Confidence[0] = 40, then the first OMR field result returned
is 40% accurate. It is important to mark that Confidence is greatly
affected by "Sensitivity". Confidence value is a mixture of how much the
sensitivity standard was accomplished, how much was it exceeded or unmet.
It also details the respect of the filling to the size of the border and
the regularity of the border.
- HasCharacter
- Whether the OMR field contains a character inside it or not.
Return Value
The method returns an Array of integers.
If the value of an element is 0, then the field was not filled. If the value of an element is 1, then
the field was filled.
The Elements of the returned array will correspond to the Elements of the Rectangles Array Areas().
Where if the first element of the returned array[0] is 0, then the OMR field surrounded by the
rectangle in the element of Areas[0] was not filled. Similarly, if the first element of the returned
array[5] is 1, then the OMR field surrounded by the rectangle in the element of Areas[5] was filled.
Example
Testing whether a selected OMR (Optical Mark Recognition) field/s is filled or not within a tiff.
using (GdPictureImaging gdpictureImaging = new GdPictureImaging())
{
int imageID = gdpictureImaging.CreateGdPictureImageFromFile("image.tif", false);
// Specifying rectangles for OMR.
const int markCount = 3;
Rectangle[] areas = new Rectangle[markCount];
// Each mark uses a quadruplet for its location (left, top, width, height).
areas[0] = new Rectangle(850, 1580, 30, 30); // First area left, top, width, height.
areas[1] = new Rectangle(850, 1620, 30, 30); // Second area left, top, width, height.
areas[2] = new Rectangle(850, 1660, 30, 30); // Third area left, top, width, height.
int[] confidences = new int[markCount];
int[] filled = gdpictureImaging.OMRDetectOvalMarks(imageID, areas, markCount, 0.5, confidences, false);
StringBuilder result = new StringBuilder();
for (int index = 0; index < markCount; index++)
{
result.AppendLine("Index:" + index.ToString());
result.AppendLine("Left:" + areas[index].X.ToString());
result.AppendLine("Top:" + areas[index].Y.ToString());
result.AppendLine("Width:" + areas[index].Width.ToString());
result.AppendLine("Height:" + areas[index].Height.ToString());
result.AppendLine("Confidence:" + confidences[index].ToString());
result.AppendLine("Filled:" + filled[index].ToString());
result.AppendLine();
}
MessageBox.Show(result.ToString(), "Result", MessageBoxButtons.OK, MessageBoxIcon.Information);
gdpictureImaging.ReleaseGdPictureImage(imageID);
}
Example
Testing whether a selected OMR (Optical Mark Recognition) field/s is filled or not within a tiff.
using (GdPictureImaging gdpictureImaging = new GdPictureImaging())
{
int imageID = gdpictureImaging.CreateGdPictureImageFromFile("image.tif", false);
// Specifying rectangles for OMR.
const int markCount = 3;
Rectangle[] areas = new Rectangle[markCount];
// Each mark uses a quadruplet for its location (left, top, width, height).
areas[0] = new Rectangle(850, 1580, 30, 30); // First area left, top, width, height.
areas[1] = new Rectangle(850, 1620, 30, 30); // Second area left, top, width, height.
areas[2] = new Rectangle(850, 1660, 30, 30); // Third area left, top, width, height.
int[] confidences = new int[markCount];
int[] filled = gdpictureImaging.OMRDetectOvalMarks(imageID, areas, markCount, 0.5, confidences, false);
StringBuilder result = new StringBuilder();
for (int index = 0; index < markCount; index++)
{
result.AppendLine("Index:" + index.ToString());
result.AppendLine("Left:" + areas[index].X.ToString());
result.AppendLine("Top:" + areas[index].Y.ToString());
result.AppendLine("Width:" + areas[index].Width.ToString());
result.AppendLine("Height:" + areas[index].Height.ToString());
result.AppendLine("Confidence:" + confidences[index].ToString());
result.AppendLine("Filled:" + filled[index].ToString());
result.AppendLine();
}
MessageBox.Show(result.ToString(), "Result", MessageBoxButtons.OK, MessageBoxIcon.Information);
gdpictureImaging.ReleaseGdPictureImage(imageID);
}
See Also